package domain;

import java.io.Serializable;
import java.util.List;
import org.uqbar.commons.model.ObservableObject;
import domain.extra.Result;

public abstract class Bet extends ObservableObject implements Serializable{
	protected int count;
	private Player player;
	private Object strategy;
	
	public static final String COUNT = "count";
	public static final String PLAYER = "player";
	public static final String STRATEGY = "strategy";

	public Bet() {
	}

	public abstract boolean win(Result r);

	public abstract int gain();
	
	public abstract List getOptions(); 
	
	public abstract String getDescription();
	
	public abstract void typeOption(Object type); 
	
	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.setFieldValue(COUNT, count);
	}

	public void setPlayer(Player player) {
		setFieldValue(PLAYER, player);
	}
	
	public void setStrategy(Object strategy) {
		setFieldValue(STRATEGY, strategy);
	}

	public Player getPlayer() {
		return player;
	}

	public Object getStrategy() {
		return strategy;
	}
}
